home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
-
- #include <MyTCPIncludes.h>
- #include <AddressXLation.h>
-
- #include <Socks.h>
-
- #include <HighLevelDNS.h>
-
- #define mySocksDaemon "tcpgate2"
- #define mySocksPort 1080
-
- int main(){
- OSErr err;
- short tcpV;
- SOCKSiopb pb;
- IPAddr mango;
- char buf[16*1024];
- char buff[50]="Test String";
- char name[10]="dnebing\0";
- IPAddr sock;
-
- printf("Socks Test\n");
-
- err=OpenMacTCP(&tcpV,false);
- printf("Open returns %d\n",err);
-
- err=OpenResolver((StringPtr)0);
- printf("OpenResolver returns %d\n",err);
-
- if (err!=noErr)
- return 0;
-
- DNSLookup(mySocksDaemon,&(pb.csParam.open.socksHost));
- pb.csParam.open.socksPort=mySocksPort;
- sock.a.addr=pb.csParam.open.socksHost;
- pb.csParam.open.socksUser=name;
-
- printf("Socks host: %u.%u.%u.%u\n",sock.a.byte[0],sock.a.byte[1]
- ,sock.a.byte[2],sock.a.byte[3]);
-
- DNSLookup("mango.epix.net",&(mango.a.addr));
- printf("Remote host: %u.%u.%u.%u\n",mango.a.byte[0],mango.a.byte[1]
- ,mango.a.byte[2],mango.a.byte[3]);
-
- err=CloseResolver();
- printf("CloseResolver returns %d\n",err);
-
- pb.ioCRefNum=tcpV;
- pb.csParam.create.rcvBuff=buf;
- pb.csParam.create.rcvBuffLen=16*1024;
- pb.csParam.create.notifyProc=(TCPNotifyUPP)0;
-
- // create a socks (TCP) stream
- err=SOCKS_Create(&pb,false);
- printf("Create returns %d\n",err);
-
- pb.ioCRefNum=tcpV;
- pb.csParam.open.ulpTimeoutValue=0;
- pb.csParam.open.ulpTimeoutAction=0;
- pb.csParam.open.tosFlags=0;
- pb.csParam.open.remoteHost=mango.a.addr;
- pb.csParam.open.remotePort=7;// echo port
- pb.csParam.open.validityFlags=0;
- pb.csParam.open.tosFlags=0;
- pb.csParam.open.precedence=0;
- pb.csParam.open.dontFrag=true;
- pb.csParam.open.timeToLive=0;
- pb.csParam.open.security=0;
- pb.csParam.open.optionCnt=0;
-
- err=SOCKS_ActiveOpen(&pb,false);
- printf("Socks returns %d\n",err);
-
- if (err==noErr){
- wdsEntry en[2];
- char retBuf[100];
- long bufLen;
-
- pb.ioCRefNum=tcpV;
-
- printf(" Have a connection through the socks daemon\n");
-
- pb.csParam.send.ulpTimeoutValue=pb.csParam.send.ulpTimeoutAction=
- pb.csParam.send.validityFlags=0;
- pb.csParam.send.pushFlag=2;
- pb.csParam.send.urgentFlag=0;
-
- en[0].ptr=(Ptr)buff;
- en[0].length=StrLen(buff);
- en[1].ptr=(Ptr)0;
- en[1].length=0;
-
- pb.csParam.send.wdsPtr=(Ptr)en;
-
- err=SOCKS_Send(&pb,false);
- printf(" Send returns %d\n",err);
-
- pb.ioCRefNum=tcpV;
- pb.csParam.receive.commandTimeoutValue=0;
- pb.csParam.receive.rcvBuff=retBuf;
- pb.csParam.receive.rcvBuffLen=100;
-
- err=SOCKS_Rcv(&pb,false);
- printf(" Rcv returns %d, len %d\n",err,pb.csParam.receive.rcvBuffLen);
-
- retBuf[pb.csParam.receive.rcvBuffLen]=0;
- printf(" Received [%s]\n",retBuf);
- }
-
- pb.ioCRefNum=tcpV;
- pb.csParam.close.ulpTimeoutValue=0;
- pb.csParam.close.ulpTimeoutAction=0;
- pb.csParam.close.validityFlags=0;
-
- err=SOCKS_Close(&pb,false);
- printf("Close returns %d\n",err);
-
- pb.ioCRefNum=tcpV;
- err=SOCKS_Release(&pb,false);
-
- printf("Release returns %d\n",err);
-
- return 0;
- }